// 建立CURD(增删改查)路由接口
//引入express模块
const express = require("express")
//定义路由级中间件
const router = express.Router()
//引入数据模型模块
const { User } = require("../models/userSchema")
/**
 * 查找用户
 * 完整路径前缀/api
 * 如果没有未传递的动态参数 _id, 则是分页查询
 * 如果有参数 _id 则是根据id查询具体用户对象信息
 */
router.get('/:_id?', (req, res) => {
  // 1，获取对象id
  const { _id } = req.params
  // 判断id是否为undifind
  if(!_id){
    // 不为空则是分页查询，获取查询信息page， pageSize
    // 如果page，pageSize没有，则赋初始值
    const { page = 1, pageSize = 2 } = req.query
    User.count()    // 查询总量，计数count
      .then(count => {
        // 查询记录信息
        User.find()
          .limit(+pageSize)  //根据pageSize限制查询
          .skip((page - 1) * pageSize)  // 跳过多少条数据
          .then(resData => {
            res.json({ data: resData })
          })
          .catch(err => {
            res.json(err)
          })
      })
  }
})
/**
 * 添加用户
 */
router.post('/', (req, res) => {
  // 从请求体中获取到用户输入的信息 req.body
  const { 
    username,
    password,
    sex,
    phone,
    email
   } = req.body
  // 向数据库中添加用户信息，save()
  // 创建实例，调用save()
  new User({ username, password, sex, phone, email })
   .save()
   .then(resData => {
     res.json({ data: resData })
   })
   .catch(err => {
     res.json(err)
   })
})
/**
 * 修改用户
 */
router.put('/', (req, res) => {
  // 获取请求中的用户信息
  const { _id,
    username,
    password,
    sex,
    phone,
    email
  } = req.body
  User.update({ _id }, { username, password, sex, phone, email })
    .then(resData => {
      res.json({ data: resData })
    })
    .catch(err => {
      res.json(err)
    })
})
/**
 * 删除用户
 */
router.delete('/:_id', (req, res) => {
  // 获取请求的动态路径参数， req.params 
  const { _id } = req.params
  // 使用remove()删除该条数据
  User.remove({_id})
  .then(resData => {
    res.json({ data: resData })
  })
  .catch(err => {
    res.json(err)
  })
})

module.exports = router